expander: Add a child property
authorMatthias Clasen <mclasen@redhat.com>
Thu, 7 May 2020 04:02:42 +0000 (00:02 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 12 May 2020 02:21:14 +0000 (22:21 -0400)
docs/reference/gtk/gtk4-sections.txt
gtk/gtkexpander.c
gtk/gtkexpander.h

index 467117af32e746e7214006f7b7cec047477db01e..6ac6044a70cc16aeab469f5a2096662b5f7326a3 100644 (file)
@@ -1011,6 +1011,8 @@ gtk_expander_set_label_widget
 gtk_expander_get_label_widget
 gtk_expander_set_resize_toplevel
 gtk_expander_get_resize_toplevel
+gtk_expander_set_child
+gtk_expander_get_child
 <SUBSECTION Standard>
 GTK_TYPE_EXPANDER
 GTK_EXPANDER_CLASS
index 3e5f58a0a0d6c48500d46f1385f345a8d1c9e519..80442d9282ff49d2f87c3969d114e61201bfde97 100644 (file)
@@ -140,7 +140,8 @@ enum
   PROP_USE_UNDERLINE,
   PROP_USE_MARKUP,
   PROP_LABEL_WIDGET,
-  PROP_RESIZE_TOPLEVEL
+  PROP_RESIZE_TOPLEVEL,
+  PROP_CHILD
 };
 
 typedef struct _GtkExpanderClass   GtkExpanderClass;
@@ -355,6 +356,14 @@ gtk_expander_class_init (GtkExpanderClass *klass)
                                                          FALSE,
                                                          GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
 
+  g_object_class_install_property (gobject_class,
+                                   PROP_CHILD,
+                                   g_param_spec_object ("child",
+                                                        P_("Child"),
+                                                        P_("The child widget"),
+                                                        GTK_TYPE_WIDGET,
+                                                        GTK_PARAM_READWRITE));
+
   widget_class->activate_signal =
     g_signal_new (I_("activate"),
                   G_TYPE_FROM_CLASS (gobject_class),
@@ -464,6 +473,9 @@ gtk_expander_set_property (GObject      *object,
     case PROP_RESIZE_TOPLEVEL:
       gtk_expander_set_resize_toplevel (expander, g_value_get_boolean (value));
       break;
+    case PROP_CHILD:
+      gtk_expander_set_child (expander, g_value_get_object (value));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -500,6 +512,9 @@ gtk_expander_get_property (GObject    *object,
     case PROP_RESIZE_TOPLEVEL:
       g_value_set_boolean (value, gtk_expander_get_resize_toplevel (expander));
       break;
+    case PROP_CHILD:
+      g_value_set_object (value, gtk_expander_get_child (expander));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -1191,3 +1206,44 @@ gtk_expander_get_resize_toplevel (GtkExpander *expander)
 
   return expander->resize_toplevel;
 }
+
+/**
+ * gtk_expander_set_child:
+ * @expander: a #GtkExpander
+ * @child: (allow-none): the child widget
+ *
+ * Sets the child widget of @expander.
+ */
+void
+gtk_expander_set_child (GtkExpander *expander,
+                        GtkWidget   *child)
+{
+  g_return_if_fail (GTK_IS_EXPANDER (expander));
+  g_return_if_fail (child == NULL || GTK_IS_WIDGET (child));
+
+  g_clear_pointer (&expander->child, gtk_widget_unparent);
+
+  expander->child = child;
+
+  if (expander->child)
+    gtk_widget_set_parent (expander->child, GTK_WIDGET (expander));
+
+  g_object_notify (G_OBJECT (expander), "child");
+}
+
+/**
+ * gtk_expander_get_child:
+ * @expander: a #GtkExpander
+ *
+ * Gets the child widget of @expander.
+ *
+ * Returns: (nullable) (transfer none): the child widget of @expander
+ */
+GtkWidget *
+gtk_expander_get_child (GtkExpander *expander)
+{
+  g_return_val_if_fail (GTK_IS_EXPANDER (expander), NULL);
+
+  return expander->child;
+}
+
index e1e7afef3f2f8bdb29befcc807d7103d449244a1..1737816058ee5888709765668d4990b5cb2d68f8 100644 (file)
@@ -16,7 +16,7 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  *
  * Authors:
- *     Mark McLoughlin <mark@skynet.ie>
+ *      Mark McLoughlin <mark@skynet.ie>
  */
 
 #ifndef __GTK_EXPANDER_H__
@@ -70,7 +70,7 @@ gboolean              gtk_expander_get_use_markup      (GtkExpander *expander);
 
 GDK_AVAILABLE_IN_ALL
 void                  gtk_expander_set_label_widget    (GtkExpander *expander,
-                                                       GtkWidget   *label_widget);
+                                                        GtkWidget   *label_widget);
 GDK_AVAILABLE_IN_ALL
 GtkWidget            *gtk_expander_get_label_widget    (GtkExpander *expander);
 GDK_AVAILABLE_IN_ALL
@@ -79,6 +79,13 @@ void                  gtk_expander_set_resize_toplevel (GtkExpander *expander,
 GDK_AVAILABLE_IN_ALL
 gboolean              gtk_expander_get_resize_toplevel (GtkExpander *expander);
 
+GDK_AVAILABLE_IN_ALL
+void                  gtk_expander_set_child           (GtkExpander *expander,
+                                                        GtkWidget      *child);
+GDK_AVAILABLE_IN_ALL
+GtkWidget *           gtk_expander_get_child           (GtkExpander *expander);
+
+
 G_END_DECLS
 
 #endif /* __GTK_EXPANDER_H__ */